﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Reflection;

namespace ANGF
{
    static class Program
    {
        /// <summary>
        /// Main関数の終了コードとして返すべき値
        /// </summary>
        public static int ReturnValue = 0;
        /// <summary>
        /// コマンドライン引数
        /// </summary>
        public static string[] Args;
        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static int Main(string[] args)
        {
            Args = args;
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
#if !DEBUG
            try
            {
#endif
                ANGFLib.World.ForceToInit();
                Application.Run(new ANGF.FormMain());
                ANGFLib.General.CallAllModuleMethod((m) => { m.OnEnd(); });
                return ReturnValue;
#if !DEBUG
            }
            catch (Exception e)
            {
                if (System.Diagnostics.Debugger.IsAttached) throw;
                ExceptionReporter.reportException(e);
                return 2;// dummy
            }
#endif
        }
    }
}
